#ifndef __GRAPHIC_PARTICLE_MODIFIER_GRAVITY__
    #define __GRAPHIC_PARTICLE_MODIFIER_GRAVITY__

    // .. REFERENCES

    #include "primitives.h"
    #include "graphic_particle_modifier.h"
    #include "graphic_particle_table.h"
	#include "defs.h"

    // .. TYPES

    class GRAPHIC_PARTICLE_MODIFIER_GRAVITY :
        public GRAPHIC_PARTICLE_MODIFIER
    {
        // -- PUBLIC

    public :

        // .. TYPES

        DECLARE_REF( GRAPHIC_PARTICLE_MODIFIER_GRAVITY );

        // .. CONSTRUCTORS

        GRAPHIC_PARTICLE_MODIFIER_GRAVITY();

        // .. ACCESSORS

        VOID SetGravity(
            const REAL gravity
            )
        {
            Gravity = gravity;
        }

        // ~~

        REAL GetGravity() const
        {
            return Gravity;
        }

        // .. OPERATIONS

        virtual VOID Modify(
            GRAPHIC_PARTICLE_TABLE::FIXED_PARTICLE_TABLE & particle_table,
            const TIMER & time_step
            );

        // -- PRIVATE

    private :

        // .. CONSTRUCTORS

        GRAPHIC_PARTICLE_MODIFIER_GRAVITY(
            const GRAPHIC_PARTICLE_MODIFIER_GRAVITY & other
            );

        // .. OPERATORS

        GRAPHIC_PARTICLE_MODIFIER_GRAVITY & operator=(
            const GRAPHIC_PARTICLE_MODIFIER_GRAVITY & other
            );

        // .. ATTRIBUTES

        REAL
            Gravity;
    };
#endif
